/**
 * API接口配置文件
 * 集中管理所有API接口地址和请求方法
 */

const request = require('./request.js');

// API接口地址配置
const API = {
  // 用户相关接口
  USER: {
    LOGIN: '/user/login',           // 用户登录
    REGISTER: '/user/reg',          // 用户注册
    INFO: '/user/info',             // 获取用户信息
    UPDATE: '/user/update',         // 更新用户信息
    LOGOUT: '/user/logout',         // 用户退出
  },
  
  // 商品相关接口
  PRODUCT: {
    LIST: '/pro/list',              // 商品列表
    DETAIL: '/pro/detail',          // 商品详情
    SEARCH: '/pro/search',          // 商品搜索
    CATEGORY: '/pro/category',      // 商品分类
  },
  
  // 轮播图接口
  BANNER: {
    LIST: '/banner/list',           // 轮播图列表
  },
  
  // 购物车相关接口
  CART: {
    LIST: '/cart/list',             // 购物车列表
    ADD: '/cart/add',               // 添加到购物车
    UPDATE: '/cart/update',         // 更新购物车
    DELETE: '/cart/delete',         // 删除购物车项
  },
  
  // 订单相关接口
  ORDER: {
    LIST: '/order/list',            // 订单列表
    CREATE: '/order/create',        // 创建订单
    DETAIL: '/order/detail',        // 订单详情
    CANCEL: '/order/cancel',        // 取消订单
  }
};

// 用户相关API方法
const userAPI = {
  /**
   * 用户登录
   * @param {string} username 用户名
   * @param {string} password 密码
   */
  login(username, password) {
    return request.post(API.USER.LOGIN, {
      username,
      password
    }, {
      needAuth: false
    });
  },
  
  /**
   * 用户注册
   * @param {string} username 用户名
   * @param {string} password 密码
   */
  register(username, password) {
    return request.post(API.USER.REGISTER, {
      username,
      password
    }, {
      needAuth: false
    });
  },
  
  /**
   * 获取用户信息
   * @param {string} userid 用户ID
   */
  getUserInfo(userid) {
    return request.get(API.USER.INFO, {
      userid
    });
  },
  
  /**
   * 更新用户信息
   * @param {Object} userInfo 用户信息
   */
  updateUserInfo(userInfo) {
    return request.post(API.USER.UPDATE, userInfo);
  },
  
  /**
   * 用户退出登录
   */
  logout() {
    return request.post(API.USER.LOGOUT);
  }
};

// 商品相关API方法
const productAPI = {
  /**
   * 获取商品列表
   * @param {Object} params 查询参数
   */
  getProductList(params = {}) {
    return request.get(API.PRODUCT.LIST, params);
  },
  
  /**
   * 获取商品详情
   * @param {string} productId 商品ID
   */
  getProductDetail(productId) {
    return request.get(`${API.PRODUCT.DETAIL}/${productId}`);
  },
  
  /**
   * 搜索商品
   * @param {string} keyword 搜索关键词
   * @param {Object} params 其他参数
   */
  searchProducts(keyword, params = {}) {
    return request.get(API.PRODUCT.SEARCH, {
      keyword,
      ...params
    });
  }
};

// 轮播图相关API方法
const bannerAPI = {
  /**
   * 获取轮播图列表
   */
  getBannerList() {
    return request.get(API.BANNER.LIST, {}, {
      needAuth: false
    });
  }
};

// 购物车相关API方法
const cartAPI = {
  /**
   * 获取购物车列表
   */
  getCartList() {
    return request.get(API.CART.LIST);
  },
  
  /**
   * 添加商品到购物车
   * @param {string} productId 商品ID
   * @param {number} quantity 数量
   */
  addToCart(productId, quantity = 1) {
    return request.post(API.CART.ADD, {
      productId,
      quantity
    });
  },
  
  /**
   * 更新购物车商品数量
   * @param {string} cartId 购物车项ID
   * @param {number} quantity 新数量
   */
  updateCartItem(cartId, quantity) {
    return request.put(API.CART.UPDATE, {
      cartId,
      quantity
    });
  },
  
  /**
   * 删除购物车项
   * @param {string} cartId 购物车项ID
   */
  deleteCartItem(cartId) {
    return request.delete(API.CART.DELETE, {
      cartId
    });
  }
};

module.exports = {
  API,
  userAPI,
  productAPI,
  bannerAPI,
  cartAPI,
  request
};